package webServer;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
public class Processor extends Thread {
    
private Socket socket;
private InputStream in;
private PrintStream out;
public final static String ERB_ROOT="C:\\eclipset\\workspaces\\webserver\\htdocs";
	public  Processor(Socket socket){
	this.socket =socket	;
	try{
		in =socket.getInputStream();
		out = new PrintStream( socket.getOutputStream());
	}catch(IOException e){
		e.printStackTrace();
	}
	}
	
	public void run(){
		String filename = parse(in);
		sendFile(filename);
    	
    }
	
	public String parse(InputStream in){
		BufferedReader hr =new BufferedReader(new InputStreamReader(in));
		String filenam =null; 
		try{
			String httpMessager = hr.readLine();
			String[] content = httpMessager.split(" ");
			
			if(content.length!=3){
				SendErrorMessage(400,"client query error!");
			}
			
			System.out.print("code:"+content[0]+",filename"+content[1]+",http versjion"+content[2]);
			filenam=content[1];
			
			
		}catch(IOException e){
			e.printStackTrace();
		}
		return null;
	}
	public void SendErrorMessage(int errorCode,String errorMessage){
		out.println("HTTP/1.0"+errorCode+""+errorMessage);
		out.println("content-type:text/html");
		out.println();
		out.println("<html>");
		out.println("<title> Error Message");
		out.println("</title>");
		out.println("<body>");
		out.println("<h1>ErrorCode:"+errorCode+",Message:"+errorMessage+"</h1>");
		out.println("</body>");
		out.println("</html>");
		out.flush();
		out.close();
		try {
			in.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
	}
	public void sendFile(String filename){
		File file =new File(Processor.ERB_ROOT+filename);
		if(!file.exists()){
			SendErrorMessage(404, "File Not Found");
			return;
		}
		
		try {
			InputStream in =new FileInputStream(file);
			byte content[]=new byte[(int)file.length()];
			in.read(content);
			out.print("HTTP/1.0.200 queryfile");
			out.print("content-length:"+content.length);
			out.println();
			out.write(content);
			out.flush();
			out.close();
			in.close();
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}
